#leetcode题目11：盛最多水的容器
#难度：中等
#时间复杂度：O(n)
#空间复杂度：O(1)
#方法：双指针


#具体实现
#1.初始化两个指针，left和right，分别指向数组的开始和结束
#2.计算当前两个指针所指向的元素的面积，即(right - left) * min(height[right], height[left])
#3.更新最大面积
#4.移动指针，如果左指针小于右指针，则移动左指针，否则移动右指针
#5.返回最大面积




from typing import List

class Solution:
    def maxArea(self, height: List[int]):
        left = 0
        right = len(height) - 1
        res = 0
        while left < right:
            water = (right - left) * min(height[right], height[left])

            if water > res:
                res = water


            if height[left] < height[right]:
                left += 1
            else:
                right -= 1

        return res




#测试数据
height = [1,8,6,2,5,4,8,3,7]
#预期输出：49

soluton = Solution()
print(soluton.maxArea(height))